import Schema from 'validate'

const houseInfo = new Schema({
  building: {
    type: String,
    required: true,
    message: '楼栋信息不能为空！'
  },
  point: {
    type: String,
    required: true,
    message: '小区信息不能为空！'
  },
  room: {
    type: String,
    required: true,
    message: '房间号不能为空！'
  },
  name: {
    type: String,
    match: /^\p{sc=Han}{2,6}$/u,
    message: '姓名不合法（2-6位中文名）'
  },
  mobile: {
    type: String,
    match: /^1[3-9]\d{9}$/,
    message: '手机号格式不正确'
  },
  idcardFrontUrl: {
    type: String,
    required: true,
    message: '身份证正面不能为空！'
  },
  idcardBackUrl: {
    type: String,
    required: true,
    message: '身份证背面不能为空！'
  }
}, { strip: false })

Page({
  data: {
    // 小区楼栋信息
    building: "",
    // 业主性别0女1男
    gender: 0,
    // id
    id: "",
    // 身份证正面
    idcardFrontUrl: "",
    // 身份证背面
    idcardBackUrl: "",
    // 业主电话
    mobile: "",
    // 业主姓名
    name: "",
    // 小区信息
    point: "",
    // 小区房间信息
    room: "",
  },

  /** 新增、编辑页面，数据回流 */
  async onLoad(ev) {
    /** 编辑房屋信息 */
    if (ev.id) {
      wx.setNavigationBarTitle({ title: '编辑房屋信息' })
      let res = await wx.http({
        url: '/room/' + ev.id
      })
      let { status, ...data } = res.data
      this.setData(data)
    }
    /** 新增房屋信息 */
    else {
      this.setData({
        point: ev.title,
        building: ev.building,
        room: ev.room
      })
    }
  },

  /** 上传身份证照片 */
  async uploadIdcard(ev) {
    /** 判断是正面还是反面 */
    let type = ev.currentTarget.dataset.type
    // console.log(type);

    let res = await wx.chooseMedia({
      count: 1,
      mediaType: ['image']
    })
    let tempFilePath = res.tempFiles[0].tempFilePath
    // console.log(tempFilePath);

    const token = getApp().token

    /** 上传照片，成功后数据回显，如果token过期，跳转登录页 */
    wx.uploadFile({
      url: wx.http.baseURL + '/upload',
      filePath: tempFilePath,
      name: 'file',
      header: {
        Authorization: `Bearer ${token}`
      },
      success: (IdcardRes) => {
        // console.log(IdcardRes);
        if (IdcardRes.statusCode === 401) {
          wx.utils.toast(IdcardRes.data.message)
          wx.navigateTo({
            url: '/pages/login/index'
          })
        }
        let data = JSON.parse(IdcardRes.data)
        // console.log(data.data.url);
        if (type === 'front') {
          this.setData({
            idcardFrontUrl: data.data.url
          })
        } else {
          this.setData({
            idcardBackUrl: data.data.url
          })
        }
      },
      fail: (err) => {
        console.log(err);
      }
    })
  },

  /** 提交审核，表单验证，调用接口新增房屋, 跳转房屋列表 */
  async submit() {
    /** 表单验证, 新增房屋接口不需要传 id */
    const { id, building, gender, idcardBackUrl, idcardFrontUrl, mobile, name, point, room } = this.data
    /** 请求参数 */
    let params = {}
    /** 提示信息 */
    let tips = ''
    if (id) {
      /** 编辑页面 */
      params = { id, building, gender, idcardBackUrl, idcardFrontUrl, mobile, name, point, room }
      tips = '编辑成功'
    } else {
      /** 新增页面 */
      params = { building, gender, idcardBackUrl, idcardFrontUrl, mobile, name, point, room }
      tips = '新增成功'
    }

    const errors = houseInfo.validate(params)
    if (errors.length !== 0) {
      return wx.utils.toast(errors[0].message)
    }

    /** 调用接口发数据到后端 */
    let res = await wx.http({
      url: '/room',
      method: 'POST',
      data: params
    })

    if (res.code !== 10000) {
      return wx.utils.toast(res.message)
    }

    wx.showToast({ title: tips, icon: 'success' })

    /** 跳转房屋列表页面 */
    setTimeout(() => {
      wx.redirectTo({
        url: '/house_pkg/pages/list/index',
        fail: (err) => {
          console.log(err);
        }
      })
    }, 1000)
  },

  /** 删除身份证照片 */
  removePicture(ev) {
    console.log(ev);
    let type = ev.mark.type
    this.setData({
      [type]: ''
    })
  }
})

